package com.dhcc.bpm.modules.scf.entity;

import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.NullSerializer;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 主体基本信息表实体类
 */
@Data
@TableName("scf_subject_basic_info")
public class ScfSubjectBasicInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 编号
     */
    @TableId(value = "ROW_ID", type = IdType.INPUT)
    private String rowId;

    /**
     * 主体编号-编号规则中包含上类型
     */
    @TableField("SUB_NUM")
    private String subNum;

    /**
     * 主体类型-1 个体 2 企业
     */
    @TableField("SUB_TYPE")
    @ExcelProperty("主体类型")
    private String subType;

    /**
     * 主体角色（供应商、利废企业、再生资源企业）
     */
    @TableField("SUB_ROLE")
    @ExcelProperty("主体角色")
    private String subRole;

    /**
     * 主体名称-企业名称&个体名称
     */
    @TableField("SUB_NAME")
    @ExcelProperty("主体名称")
    private String subName;

    /**
     * 统一社会信用代码
     */
    @TableField("SC_CODE")
    @ExcelProperty("企业统一社会信用代码")
    private String scCode;

    /**
     * 企业类型
     */
    @TableField("UNIT_TYPE")
    @ExcelProperty("企业类型")
    private String unitType;

    /**
     * 注册资金
     */
    @TableField("REGISTERED_CAPITAL")
    @JsonSerialize(using = ToStringSerializer.class, nullsUsing = NullSerializer.class)
    @ExcelProperty("注册资本（万元）")
    private BigDecimal registeredCapital;

    /**
     * 法人姓名
     */
    @TableField("LEGAL_NAME")
    @ExcelProperty("法人名称")
    private String legalName;

    /**
     * 法人证件类型
     */
    @TableField("LEGAL_ID_TYPE")
    @ExcelProperty("法人证件类型")
    private String legalIdType;

    /**
     * 法人证件号
     */
    @TableField("LEGAL_ID_NUM")
    @ExcelProperty("法人证件号码")
    private String legalIdNum;

    /**
     * 成立时间
     */
    @TableField("REGISTERED_DATE")
    @ExcelProperty("成立时间")
    private String registeredDate;

    /**
     * 营业期限
     */
    @TableField("EXPIRATION_DATE")
    @ExcelProperty("营业期限")
    private String expirationDate;

    /**
     * 经营范围
     */
    @TableField("BUSINESS_SCOPE")
    @ExcelProperty("经营范围")
    private String businessScope;

    /**
     * 登记日期
     */
    @TableField("APPROVED_DATE")
    @ExcelProperty("登记时间")
    private String approvedDate;

    /**
     * 性别
     */
    @TableField("SEX")
    @ExcelProperty("性别")
    private String sex;

    /**
     * 出生日期
     */
    @TableField("BIRTHDAY")
    @ExcelProperty("出生日期")
    private String birthday;

    /**
     * 主体证件类型
     */
    @TableField("ID_TYPE")
    @ExcelProperty("个体证件类型")
    private String idType;

    /**
     * 主体证件号码
     */
    @TableField("ID_NUM")
    @ExcelProperty("个体证件号码")
    private String idNum;

    /**
     * 证件有效截止期
     */
    @TableField("ID_DATE")
    @ExcelProperty("证件有效截止日")
    private String idDate;

    /**
     * 现居地址
     */
    @TableField("ADDRESS")
    @ExcelProperty("现居地址")
    private String address;

    /**
     * 登记机关
     */
    @TableField("AGENCY")
    @ExcelProperty("登记机关")
    private String agency;

    /**
     * 注册地址（企业）&户籍地址（个体）
     */
    @TableField("REGISTERED_ADDR")
    @ExcelProperty("注册地址")
    private String registeredAddr;
    /**
     * 户籍地址，虚拟字段，不在表中，用于获取户籍地址然后设置到注册地址中
     */
    @ExcelProperty("户籍地址")
    @TableField(value = "hj_addr", exist = false)
    private String hjAddr;

    /**
     * 签发机关，虚拟字段，不在表中，用于获取签发机关然后设置到登记机关字段中
     */
    @ExcelProperty("签发机关")
    @TableField(value = "qfjg", exist = false)
    private String qfjg;

    /**
     * 联系人-如果是个体那么个体名称为联系人名称
     */
    @TableField("CONTACTS")
    @ExcelProperty("联系人名称")
    private String contacts;

    /**
     * 联系电话
     */
    @TableField("TELEPHONE")
    @ExcelProperty("联系电话")
    private String telephone;

    /**
     * 固定电话
     */
    @TableField("PHONE_NUM")
    @ExcelProperty("固定电话")
    private String phoneNum;

    /**
     * 电子邮箱
     */
    @TableField("EMAIL")
    @ExcelProperty("电子邮箱")
    private String email;

    /**
     * 开户银行
     */
    @TableField("OPEN_BANK")
    @ExcelProperty("开户银行")
    private String openBank;

    /**
     * 银行账户
     */
    @TableField("BANK_ACCNO")
    @ExcelProperty("开户行账号")
    private String bankAccno;

    /**
     * 认证状态 1 已认证 2 待认证 3 认证中 4认证失败
     */
    @TableField("STS")
    private String sts;
    /**
     * 地区代码
     */
    @TableField("ADCODE")
    private String adCode;

    /**
     * 录入人
     */
    @TableField("RECORDER")
    private String recorder;

    /**
     * 录入日期
     */
    @TableField("RECORD_DATE")
    private String recordDate;

    /**
     * 录入时间
     */
    @TableField("RECORD_TIME")
    private String recordTime;

    @TableField("ORG_CODE")
    @ExcelProperty("所属公司编码")
    private String orgCode;


}
